/* Sticky Tooltip script (v1.0)
* Created: Nov 25th, 2009. This notice must stay intact for usage 
* Author: Dynamic Drive at http://www.dynamicdrive.com/
* Visit http://www.dynamicdrive.com/ for full source code
*/


var stickytooltip={
	tooltipoffsets: [20, -30], // additional x and y offset from mouse cursor
								// for tooltips
	fadeinspeed: 800, // duration of fade effect in milliseconds
	rightclickstick: true, // sticky tooltip when user right clicks over the
							// triggering element (apart from pressing "s" key)
							// ?
	stickybordercolors: ["black", "darkred"], // border color of tooltip
												// depending on sticky state
	stickynotice1: ["Press \"s\"", "or right click", "to sticky box"], // customize
																		// tooltip
																		// status
																		// message
	stickynotice2: "Click outside this box to hide it", // customize tooltip
														// status message

	// ***** NO NEED TO EDIT BEYOND HERE

	isdocked: false,

	positiontooltip:function($, $tooltip, e){
		var x=e.pageX+this.tooltipoffsets[0], y=e.pageY+this.tooltipoffsets[1]
		var tipw=$tooltip.outerWidth(), tiph=$tooltip.outerHeight(), 
		x=(x+tipw>$(document).scrollLeft()+$(window).width())? x-tipw-(stickytooltip.tooltipoffsets[0]*2) : x
		y=(y+tiph>$(document).scrollTop()+$(window).height())? $(document).scrollTop()+$(window).height()-tiph-10 : y
		$tooltip.css({left:x, top:y})
	},
	
	showbox:function($, $tooltip, e){
		$tooltip.fadeIn(this.fadeinspeed)
		this.positiontooltip($, $tooltip, e)
	},

	hidebox:function($, $tooltip){
		if (!this.isdocked){
			$tooltip.stop(false, true).hide()
		//	$tooltip.css({borderColor:'black'}).find('.stickystatus:eq(0)').css({background:this.stickybordercolors[0]}).html(this.stickynotice1)
		}
	},
	hidebox1:function($, $tooltip){
			
			$tooltip.stop(false, true).hide()
		//	$tooltip.css({borderColor:'black'}).find('.stickystatus:eq(0)').css({background:this.stickybordercolors[0]}).html(this.stickynotice1)
	},

	docktooltip:function($, $tooltip, e){
		this.isdocked=true
	//	$tooltip.css({borderColor:'darkred'}).find('.stickystatus:eq(0)').css({background:this.stickybordercolors[1]}).html(this.stickynotice2)
	},
	docktooltip1:function($, $tooltip){
		this.isdocked = true
	//	$tooltip.css({borderColor:'darkred'}).find('.stickystatus:eq(0)').css({background:this.stickybordercolors[1]}).html(this.stickynotice2)
	}
	,


	init:function(targetselector, tipid){
		jQuery(document).ready(function($){
			var $targets=$(targetselector)
			var $tooltip=$('#'+tipid).appendTo(document.body)
			if ($targets.length==0)
				return
			var $alltips=$tooltip.find('div.atip')
				
			if (!stickytooltip.rightclickstick)
				stickytooltip.stickynotice1[1]=''
			stickytooltip.stickynotice1=stickytooltip.stickynotice1.join(' ')
			stickytooltip.hidebox($, $tooltip)
			$targets.bind('mouseenter', function(e){
				$alltips.hide().filter('#'+$(this).attr('data-tooltip')).show()
				stickytooltip.showbox($, $tooltip, e)
				
			})
			$targets.bind('mouseleave', function(e){
				stickytooltip.hidebox($, $tooltip)
			})
			$targets.bind('mousemove', function(e){
				if (!stickytooltip.isdocked){
					stickytooltip.positiontooltip($, $tooltip, e)
				}
			})
			$tooltip.bind("mouseenter", function(){
				stickytooltip.hidebox($, $tooltip)
			})
			$tooltip.bind("click", function(e){
				e.stopPropagation()
			})
			$(this).bind("click", function(e){
				if (e.button==0){
					stickytooltip.isdocked=false
					stickytooltip.hidebox($, $tooltip)
				}
			})
			$(this).bind("contextmenu", function(e){
				if (stickytooltip.rightclickstick && $(e.target).parents().andSelf().filter(targetselector).length==1){ // if
																														// oncontextmenu
																														// over
																														// a
																														// target
																														// element
					stickytooltip.docktooltip($, $tooltip, e)
					return false
				}
			})
			$(this).bind('keypress', function(e){
				var keyunicode=e.charCode || e.keyCode
				if (keyunicode==115){ // if "s" key was pressed
					stickytooltip.docktooltip($, $tooltip, e)
				}
			})
	//		stickytooltip.docktooltip($, $tooltip, e)
		}) // end dom ready
	},
	
	init2:function(targetselector, tipid){
			var $targets=$(targetselector)
			var $tooltip=$('#'+tipid).appendTo(document.body)
			if ($targets.length==0)
				return
			var $alltips=$tooltip.find('div.atip')
			if (!stickytooltip.rightclickstick)
			stickytooltip.hidebox($, $tooltip)
			$targets.bind('mouseenter', function(e){
			stickytooltip.isdocked=true
				$alltips.hide().filter('#'+$(this).attr('data-tooltip')).show()
				stickytooltip.showbox($, $tooltip, e)
				
			//	stickytooltip.docktooltip1($, $tooltip)
				
				isdocked=false// this should be....!
				
				
			})
		
			$targets.bind('mouseleave', function(e){
			//	stickytooltip.isdocked=false
				isdocked = false
			setTimeout(function() {
		
			//	stickytooltip.hidebox($, $tooltip)
			//	stickytooltip.isdocked=true
				
				if(!isdocked){
					
					stickytooltip.hidebox1($, $tooltip)
					isdocked = false
					
					}
				}, 100);
			})
			$targets.bind('mousemove', function(e){
				stickytooltip.hidebox($, $tooltip)
			})
			$tooltip.bind("mouseenter", function(){
				isdocked = true
			//	stickytooltip.hidebox($, $tooltip)
			
				stickytooltip.docktooltip1($, $tooltip)
			})
			$tooltip.bind("click", function(e){
				e.stopPropagation()
				isdock = true
			})
			$tooltip.bind("mouseleave", function(e){
				stickytooltip.hidebox1($, $tooltip)
				isdock = false
			})
			$(this).bind("click", function(e){
				if (e.button==0){
					isdocked=false
					stickytooltip.hidebox1($, $tooltip)
				}
			})
			
			$(this).bind("contextmenu", function(e){
				if (stickytooltip.rightclickstick && $(e.target).parents().andSelf().filter(targetselector).length==1){ // if
																														// oncontextmenu
																														// over
																														// a
																														// target
																														// element
				//	stickytooltip.isdocked=true
					stickytooltip.docktooltip($, $tooltip, e)
					return false
				}
			})
			$(this).bind('keypress', function(e){
				var keyunicode=e.charCode || e.keyCode
				if (keyunicode==115){ // if "s" key was pressed
					stickytooltip.docktooltip($, $tooltip, e)
				}
			})
		//	stickytooltip.docktooltip($, $tooltip, e);
	}
}

// stickytooltip.init("targetElementSelector", "tooltipcontainer")
stickytooltip.init("*[data-tooltip]", "mystickytooltip")